﻿using Microsoft.AspNetCore.Builder;

namespace Service.Framework.AppStartup
{
    public interface IStartupModule
    {
        //
        // 摘要:
        //     启动器执行循序，从小到大的顺序执行
        int Order { get; set; }

        //
        // 摘要:
        //     配置服务
        //
        // 参数:
        //   webApplicationBuilder:
        void ConfigureServices(WebApplicationBuilder webApplicationBuilder);

        //
        // 摘要:
        //     配置
        //
        // 参数:
        //   webApplication:
        void Configure(WebApplication webApplication);

        //
        // 摘要:
        //     程序启动 可以获取程序启动 urls
        //
        // 参数:
        //   webApplication:
        void ApplicationStarted(WebApplication webApplication);

        //
        // 摘要:
        //     程序停止中
        //
        // 参数:
        //   webApplication:
        void ApplicationStopping(WebApplication webApplication);

        //
        // 摘要:
        //     程序已经停止
        //
        // 参数:
        //   webApplication:
        void ApplicationStopped(WebApplication webApplication);

        //
        // 摘要:
        //     获取导入的所有启动器实例
        List<IStartupModule> GetAllImportStartup();
    }
}
